package Vista;

import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

import Controlador.Controlador;
import Modelo.Juego;
import Modelo.MapaInvalidoException;
import Modelo.NivelInexistenteException;

public class MenuCargaPartida implements ActionListener{

	private JFrame unFrame;
	private JPanel unPanel;
	
	private JFrame llamador;
	
	public MenuCargaPartida(){
		armarPanel();
		incializarFrame();
	}
	
	public MenuCargaPartida(boolean visible){
		armarPanel();
		incializarFrame();
		this.unFrame.setVisible(visible);
	}
	
	public boolean esVisible(){
		return this.unFrame.isVisible();
	}
	
	public void setVisible(boolean b){
		this.unFrame.setVisible(b);	
	}

	private void armarPanel() {
		this.unPanel = new JPanel(new GridLayout(3,1));
		// botones
		JButton botonCargar = new JButton("Cargar");
		final JLabel etiqueta = new JLabel("Se cargara la ultima partida salvada"); 
		botonCargar.addActionListener(this);
		JButton botonSalir = new JButton("Volver");
		botonSalir.addActionListener(this);
		// agrego botones
		this.unPanel.add(botonCargar);
		this.unPanel.add(botonSalir);
		this.unPanel.add(etiqueta);
	}

	private void incializarFrame() {
		
		
		Dimension pantallaResolucion = Toolkit.getDefaultToolkit().getScreenSize();
		this.unFrame = new JFrame();
		this.unFrame.setSize(175, 275);
		this.unFrame.setContentPane(unPanel);
		this.unFrame.addWindowListener(new MonitorVentanaBasica());
		
		unFrame.setResizable(false);
		unFrame.setTitle("MenuPrincipal");
		unFrame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
		
		int x =(int)Math.round(pantallaResolucion.getWidth()/2)-(int)Math.round(unFrame.getSize().getWidth()/2);
		int y =(int)Math.round(pantallaResolucion.getHeight()/2)-(int)Math.round(unFrame.getSize().getHeight()/2);
		unFrame.setLocation(x, y);
				
		unFrame.setVisible(true);
	}
		
	public void actionPerformed(ActionEvent e) {
		if (e.getActionCommand()=="Cargar")
			this.cargarPartidaSalvada();
		if (e.getActionCommand()=="Volver"){
			this.unFrame.setVisible(false);
			this.llamador.setVisible(true);
		}
			
	}

	private void cargarPartidaSalvada() {
		
		System.out.println("Se carga la partida");
		Juego juego = new Juego("niveles/listaniveles.xml");
		
		try{
		juego.cargarJuego("niveles/salvado.xml");
		}
		catch (MapaInvalidoException e){
			
		}
		catch (NivelInexistenteException e){
			
		}
		this.unFrame.setVisible(false);
		PantallaJuego vista =new PantallaJuego(juego); 
		
		Controlador unControladorAuto = new Controlador(juego,vista); 
		
		vista.setControlador(unControladorAuto);
		
	}
	
	public void llamador(JFrame unLlamador){
		this.llamador = unLlamador; 
	}

}
